﻿using System;
using System.Windows.Controls;
using StockAccessors;
using StockModel;
using Utils;

namespace Plugins.Core
{
	public interface IStrategyPlugin
	{
		// UI
		VisualRepresentation VisualRepresentation { get; }
		UserControl HistoricalControlPanel { get; }
		UserControl RealtimeControlPanel { get; }

		bool SupportsRealtime { get; } 

		// Construction
		void Initialize(IDataBaseClient databaseClient, QuotationDataSource quotationDataSource, ExchangeMarketDataSource exchangeMarketDataSource, RawStockDataSource rawStockDataSource, ObservableCollection2<StockGroup> realtimeGroups, IOrderExecutor executor, IStockDataAccessorInformation accessorInformation);

		// Result publishing done in historical mode
		event EventHandler<HistoricalResultsAvailableEventArgs> HistoricalResultsAvailable;
		
		// Notification done by the realtime mode
		event EventHandler<RealtimeNotificationEventArgs> RealtimeNotification;
	}
}

